package com.wjm.api.ThreadPackage;

/**
 * Data:2022年07月26日
 * Author:wjm
 * Content: 通过Runnable创建线程对象
 *
 *
 *  实现步骤:
 *         1.创建一个Runnable接口的实现类
 *         2.重写Runnable接口的run()方法，run方法中设置线程任务
 *         3.创建一个Runnable接口的实现类对象
 *         4.创建Thread类对象，构造方法中传递Runnable接口的实现类对象
 *         5.调用Thread类中的start()方法
 *
 *
 *  注意：在业务场景中，经常使用匿名内部类的方式创建线程
 *
 *
 *  实现Runnable接口创建线程的优点：
 *         1）避免了单继承的局限性（一个类只能有一个父类）
 *         2）增强了程序的可扩展性（一个类可以实现很多的接口），降低了程序的耦合度
 *
 *
 *
 *
 */
public class RunnableDemo implements Runnable{
    @Override
    public void run() {
        for (int i = 0;i<20;i++){
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
    }

    public static void main(String[] args) {
        RunnableDemo runnableDemo = new RunnableDemo();
        Thread thread1 = new Thread(runnableDemo,"wjm");
        Thread thread2 = new Thread(runnableDemo,"cwt");


        //使用匿名内部类的创建线程方式
        Thread thread3 = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0;i<20;i++){
                    System.out.println(Thread.currentThread().getName()+":"+i);
                }
            }
        },"我是匿名内部类的方式创建线程：");



        //启动线程
        thread1.start();
        thread2.start();
        thread3.start();

    }
}
